package com.hzz.dto.examine;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzz.framework.dto.BaseDto;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("目标考核-考核结果 DTO")
public class ExamineResultDto extends BaseDto {
	/** id */
	Long id;
	/** 考核指标ID */
	@NotNull(message = "targetId不能为空")
	Long targetId;

	/** 考核评估ID */
	@NotNull(message = "evaluateId不能为空")
	Long evaluateId;

	/** 被评人ID */
	@NotNull(message = "userId不能为空")
	Long userId;
	/** 被评人姓名 */
	@NotNull(message = "userName不能为空")
	@Size(max = 32, message = "userName最大32字符")
	String userName;
	/** 总分 */
	@NotNull(message = "totalScore不能为空")
	BigDecimal totalScore;
	/** 系统自动评分 */
	@NotNull(message = "autoScore不能为空")
	BigDecimal autoScore;
	/** 自评分 */
	@NotNull(message = "selfScore不能为空")
	BigDecimal selfScore;
	/**
	 * 自评时间
	 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	Date selfTime;
	/** 上级评分 */
	@NotNull(message = "leaderScore不能为空")
	BigDecimal leaderScore;
	/**
	 * 上级评分时间
	 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	Date leaderTime;
	/** 备注 */
	@Size(max = 255, message = "memo最大255字符")
	String memo;
	/** 删除标记 */
	Integer delFlag;
	/** 建立者id */
	Long createId;
	/** 更新时间 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	Date dateUpdated;
	/** 创建时间 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	Date dateCreated;

	/**
	 * 考核方案名称（非表字段）
	 */
	String targetName;
	/**
	 * 河道名称（非表字段）
	 */
	String riverName;
	/**
	 * 考核周期（非表字段）
	 */
	String period;
	/**
	 * 当前用户最后一级行政区划ID（非表字段）
	 */
	Long currAreaId;
	/**
	 * 排名（非表字段）
	 */
	Integer rank;
	/**
	 * 考核结果明细
	 */
	List<ExamineResultDetailDto> resultDetails;
	/**
	 * 考核自评资料
	 */
	List<ExamineResultAttachDto> attachs;
	/**
	 * 考核指标
	 */
	ExamineTargetDto target;
	/**
	 * 考核指标明细
	 */
	List<ExamineTargetDetailDto> targetDetails;
}
